/**
 * SuperDB Starter - 服务器入口文件
 * 
 * 职责：
 * 1. 加载环境变量配置
 * 2. 初始化文档存储（内存或 Postgres）
 * 3. 启动 Express 应用
 * 4. 监听指定端口
 * 
 * 环境变量：
 * - PORT: 服务端口（默认 4000）
 * - HOST: 监听地址（默认 0.0.0.0）
 * - DATA_BACKEND: 存储类型（memory/postgres）
 * 
 * @see server/src/app.js - Express 应用配置
 * @see server/src/store/index.js - 存储初始化
 */

require('dotenv').config({ path: process.env.SUPERDB_ENV_FILE || '.env' });

const { createServer } = require('./src/app');
const { config } = require('./src/config');
const { logger } = require('./src/utils/logger');
const { initDocumentStore } = require('./src/store');

const app = createServer();

async function start() {
  try {
    await initDocumentStore();
    app.listen(config.port, config.host, () => {
      logger.info({ port: config.port, env: config.env }, 'SuperDB server is listening');
    });
  } catch (error) {
    logger.error({ err: error }, 'Failed to initialize SuperDB');
    process.exit(1);
  }
}

start();
